﻿using System;
using System.Collections.Generic;
using System.Text;

namespace NutriStat
{
    public abstract class VisitBase : IVisit
    {
        public abstract DateTime VisitDate { get; set; }
        public abstract DateTime CreationDate { get; set; }
        public abstract DateTime ModifiedDate { get; set; }
        public abstract string ModifiedBy { get; set; }
        public abstract double Age { get; set; }
        public abstract double HeightMetric { get; set; }
        public abstract double HeightCustomary { get; set; }
        public abstract double WeightMetric { get; set; }
        public abstract double WeightCustomary { get; set; }
        public abstract bool Edema { get; set; }
        public abstract bool Recumbent { get; set; }
        public abstract double ArmCircumferenceMetric { get; set; }
        public abstract double ArmCircumferenceCustomary { get; set; }
        public abstract double HeadCircumferenceMetric { get; set; }
        public abstract double HeadCircumferenceCustomary { get; set; }
        public abstract double TricepsSkinFoldMetric { get; set; }
        public abstract double TricepsSkinFoldCustomary { get; set; }
        public abstract double SubscapularSkinFoldMetric { get; set; }
        public abstract double SubscapularSkinFoldCustomary { get; set; }
        public abstract string Notes { get; set; }

        public abstract double BMI { get; set; }    // BMI independent of reference type

        public abstract double MUACAgeZ { get; set; }      // These MUAC z-scores are independent of reference type
        public abstract double MUACHeightZ { get; set; }

        public abstract double CDCHAC { get; set; }
        public abstract double CDCHAC { get; set; }
        public abstract double CDCWHC { get; set; }
        public abstract double CDCWAC { get; set; }
        public abstract double CDCHAZ { get; set; }
        public abstract double CDCWHZ { get; set; }
        public abstract double CDCWAZ { get; set; }
        public abstract double CDCBMIC { get; set; }
        public abstract double CDCBMIZ { get; set; }
        public abstract double CDCHCircumC { get; set; }
        public abstract double CDCHCircumZ { get; set; }
        public abstract double CDCFlag { get; set; }

        public abstract double WHO1978HAC { get; set; }
        public abstract double WHO1978WHC { get; set; }
        public abstract double WHO1978WAC { get; set; }
        public abstract double WHO1978HAZ { get; set; }
        public abstract double WHO1978WHZ { get; set; }
        public abstract double WHO1978WAZ { get; set; }
        public abstract double WHO1978HAPM { get; set; }
        public abstract double WHO1978WHPM { get; set; }
        public abstract double WHO1978WAPM { get; set; }
        public abstract double WHO1978Flag { get; set; }

        public abstract double WHO2007HAC { get; set; }
        public abstract double WHO2007WHC { get; set; }
        public abstract double WHO2007WAC { get; set; }
        public abstract double WHO2007HAZ { get; set; }
        public abstract double WHO2007WHZ { get; set; }
        public abstract double WHO2007WAZ { get; set; }
        public abstract double WHO2007SSFC { get; set; }
        public abstract double WHO2007TSFC { get; set; }
        public abstract double WHO2007HCircumC { get; set; }
        public abstract double WHO2007BMIC { get; set; }
        public abstract double WHO2007MUACC { get; set; }
        public abstract double WHO2007SSFZ { get; set; }
        public abstract double WHO2007TSFZ { get; set; }
        public abstract double WHO2007HCircumZ { get; set; }
        public abstract double WHO2007BMIZ { get; set; }
        public abstract double WHO2007MUACZ { get; set; }
        public abstract double WHO2007HAFlag { get; set; }
        public abstract double WHO2007WAFlag { get; set; }
        public abstract double WHO2007WHFlag { get; set; }
        public abstract double WHO2007BMIFlag { get; set; }
        public abstract double WHO2007HeadFlag { get; set; }
        public abstract double WHO2007SSFFlag { get; set; }
        public abstract double WHO2007TSFFlag { get; set; }
        public abstract double WHO2007MUACFlag { get; set; }
    }
}
